/**
 * 有N个盒子初始为空
 * 再给定一个操作序列A，
 * 如果Ai不为0则将第i个球放入第Ai个盒子
 * 如果Ai为零，则当前数量最少、编号最小的盒子，放入第i个球
 * 规模较小，可以暴力求最少
 */
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;

using llt = long long;
using vi = vector<int>;
using vll = vector<llt>;

int N;
int Q;
vi A;
vi C;

void work(){
    cin >> N;
    cin >> Q;
    A.assign(Q, {});
    for(auto & i : A) cin >> i;

    C.assign(N + 1, 0);
    for(auto i : A){
        if(i > 0){
            C[i] += 1;
            cout << i << " ";
        }else{
            auto p = min_element(C.begin() + 1, C.end());
            cout << p - C.begin() << " ";
            (*p) += 1;
        }
    }
    cout << endl;
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);	
    int nofkase = 1;
	// cin >> nofkase;
	while(nofkase--) work();
	return 0;
}